# 1. A+B Problem
# 输入格式为 两个以空格分开的整数

# num = input()
# print(int(num.split()[0])+int(num.split()[1]))



#========================================================================
# 2. [NOIP 2002 普及组] 级数求和
# 输入格式为 一个正整数 k

# k = int(input());s = 0;n = 1
# while not s > k:
#     s += 1/n
#     n += 1
# n = n-1
# print(n)
# 最后的 n-1 是因为n其实是循环次数，当最后一次循环，也就是第n次循环判断出s大于k才会停止运行
# 此时需要获取的分母是上一次循环中最后一次加上的数的分母，也就是n-1，所以n需要减1才是题目要求的最终结果



#=========================================================================
# 3. 陶陶家的院子里有一棵苹果树，每到秋天树上就会结出 10 个苹果。苹果成熟的时候，陶陶就会跑去摘苹果。
# 陶陶有个 30 厘米高的板凳，当她不能直接用手摘到苹果的时候，就会踩到板凳上再试试。
# 现在已知 10 个苹果到地面的高度，以及陶陶把手伸直的时候能够达到的最大高度，请帮陶陶算一下她能够摘到的苹果的数目。
# 假设她碰到苹果，苹果就会掉下来。
# 输入包括两行数据。第一行包含 10 个 100 到 200 之间（包括 100 和 200）的整数（以厘米为单位）分别表示 10 个苹果到地面的高度，
# 两个相邻的整数之间用一个空格隔开。第二行只包括一个 100 到 120 之间（包含 100 和 120）的整数（以厘米为单位），
# 表示陶陶把手伸直的时候能够达到的最大高度。

# nums = input().split()
# tall = input().split('\n')    # 按换行符切割，得 tall = ["身高"]
# tall = int(tall[0]) + 30      # 获取踩在板凳上能够到的最高高度
# cnt = 0
# for num in nums:
#     if tall >= int(num):
#         cnt += 1
# # 摘得到就在count上加1
# print(cnt)



#=================================================================================================
# 4. 某校大门外长度为 l 的马路上有一排树，每两棵相邻的树之间的间隔都是 1 米。
# 我们可以把马路看成一个数轴，马路的一端在数轴 0 的位置，另一端在 l 的位置；数轴上的每个整数点，即 0,1,2,…,l，都种有一棵树。
# 由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。
# 已知任一区域的起始点和终止点的坐标都是整数，区域之间可能有重合的部分。现在要把这些区域中的树（包括区域端点处的两棵树）移走。
# 你的任务是计算将这些树都移走后，马路上还有多少棵树。
# 输入格式为 第一行有两个整数，分别表示马路的长度 l 和区域的数目 m。
# 接下来 m 行，每行两个整数 u,v，表示一个区域的起始点和终止点的坐标。

# 输入样例
# 500 3
# 150 300
# 100 200
# 470 471

#==========================================
# # 题解1：能在IDE上运行，但提交后报错RE
# from functools import cmp_to_key
#
# # 排在前面返回负数
# def cmp(a, b):
#     if a[0] < b[0]:
#         return -1
#     elif a[0] > b[0]:
#         return 1
#     else:
#         if a[1] < b[1]:
#             return -1
#         elif a[1] > b[1]:
#             return 1
#         else:
#             return 0
# lines = []
# while True:
#     line = input()
#     if line:
#         lines.append(line.split())
#     else:
#         break
# last = int(lines[0][0])
# lines.remove(lines[0])
# sorted_lines = sorted(lines, key=cmp_to_key(cmp))
# length = 0
# length += int(sorted_lines[0][0])-1
# temp = int(sorted_lines[0][1])
# for i in sorted_lines[1:]:
#     if int(i[0]) < temp:
#         pass
#     else:
#         length+=int(i[0]) - temp
#     temp = int(i[1])
# length += last - temp
# print(length)

#============================================
# 题解2：
# 看的题解，思路太清晰了，佩服nb
l, m = [int(x) for x in input().split()]
lst = [[int(i) for i in input().split()] for i in range(m)]
cnt = [1 for i in range(l+1)]
for i in lst:
    for j in range(i[0], i[1]+1):
        cnt[j] = 0
print(cnt.count(1))
